
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
//静态顺序表

//#define N 100
//typedef int SLDataType;
//typedef struct SeqList
//{
//	SLDataType a[N];
//	int size; //表示数组中存储了多少个数据
//}SL;
//
////接口函数
//void SeqListInit(SL* ps);  //顺序表的初始化
//void SeqListPushBack(SL* ps, SLDataType x);  //尾插
//void SeqListPopBack(SL* ps);                 //尾删
//void SeqListPushFront(SL* ps, SLDataType x);  //头插
//void SeqListPopFront(SL* ps);                //头删

typedef int SLDataType;

//动态顺序表
typedef struct SeqList
{
	SLDataType* a;  //指针指向动态开辟的空间（数组名）
	int size;		//表示数组中存储了多少个数据
	int capacity;  //数组实际能存放数据的空间
}SL;

//接口函数
void SeqListInit(SL* ps); //顺序表的初始化
void SeqListPrint(SL* ps);  //打印
void SeqListDestory(SL* ps);  //销毁顺序表


void SeqListCheckCapacity(SL* ps);    //扩容

void SeqListPushBack(SL* ps, SLDataType x);  //尾插
void SeqListPopBack(SL* ps);                 //尾删
void SeqListPushFront(SL* ps, SLDataType x);  //头插
void SeqListPopFront(SL* ps);                //头删

//找到，返回该值的下标，没有就返回-1
int SeqListFind(SL* ps, SLDataType x);    //查找位置 

void SeqListInsert(SL* ps, int pos, SLDataType x);  //指定下标位置插入
void SeqListErase(SL* ps, int pos);  //删除指定下标位置
